
program dsarasas;
    type sarasas = ^elem;
         elem = record
                    info: integer;
                    tolesnis, ankstesnis: sarasas;
                end;

    procedure spausdink(p: sarasas);
    begin
      while p <> nil do
      begin
        write(p^.info, ' ');
        p := p^.tolesnis
      end
    end;

   procedure pertvarkyk(p: sarasas; var pr, pab: sarasas);
   var s: sarasas;
   begin
      while p <> nil do
      begin
        if pr = nil
          then begin
            new (s);
            s^.info := p^.info;
            s^.tolesnis:=nil;
            s^.ankstesnis:=nil;
            pr           :=s;
            pab          :=s;
          end
          else begin
            new(s);
            s^.info       := p^.info;
            s^.tolesnis   :=nil;
            pab^.tolesnis := s;
            s^.ankstesnis :=pab;
            pab           :=s;
          end;
        p := p^.ankstesnis
      end ;
   end;

    var pr, p, p1, q, nsp, nspab: sarasas;
        s: integer;
begin
    pr := nil;
    p := nil;
    writeln('Kuriame sarasa. Iveskite norimus skaicius. Pabaigos pozymis 0.');
    read(s);
    new(p);
    if s <> 0 then
    begin
      p^.info := s;
      p^.ankstesnis := nil;
      p1 := p;
      pr := p;
      while s <> 0 do
      begin
        read(s);
        if s <> 0 then begin
          new(p^.tolesnis);
          p^.tolesnis^.ankstesnis := p;
          p := p^.tolesnis;
          p^.info := s
        end
      end;
    end
    else
      p1 := nil;
    p^.tolesnis := nil;
    nsp:=nil;
    nspab:=nil;
    writeln('Ivestas sarasas:');
    spausdink(pr);
    pertvarkyk(p, nsp, nspab);
    writeln('Pertvarkytas sarasas:');
    spausdink(nsp);
    readln;
    readln;
end.
